Such an optical pointing device is already known in the art. International Patent Application No WO 03/049018, filed in the name of the same Assignee, which is incorporated herein by reference, discloses a method as well as a device for motion detection in an optical sensing device, such as an optical mouse.
FIG. 1 is a generalized schematic block diagram of an optical pointing device in accordance with the prior art. It comprises a photodetector array 100 including a plurality of pixels, this photodetector array 100 being coupled to processing means 110 (or motion detection processing circuit) for processing the signals outputted by the photodetector array 100.
A comparator array 120 may be interposed between processing means 110 and array 100, this comparator array 120 including a plurality of comparator circuits each for comparing the light intensity of a first pixel of array 100 with the light intensity of a second pixel of array 100 and for outputting a resulting edge direction condition.
A distinction is made between edges according to their “direction”. In particular, one defines two distinct edge direction conditions: (i) a first edge condition, or positive edge, defined as a condition wherein the light intensity of a first pixel is less than the light intensity of a second pixel; and (ii) a second edge condition, or negative edge, defined as a condition wherein the light intensity of the first pixel is greater than the light intensity of the second pixel.
Taking photodetector array 100 as an example, a first axis, namely axis X, extends with a positive direction from left to right and a second axis, namely axis Y, extends with a positive direction from bottom to top. Accordingly, a positive edge will be defined between a selected pixel and a pixel on its right if the detected light intensity of the selected pixel is less than the light intensity of the pixel on its right. Conversely, and taking the example of two pixels aligned along axis Y, a negative edge will be defined between the selected pixel and a pixel on its upper side if the light intensity of the selected pixel is greater than the light intensity of the upper pixel. Both compared pixels can be adjacent or non-adjacent.
The optical pointing device further comprises at least one light source 130 such as a LED, which produces radiation, that impinges on a portion of a surface S. Surface S may be a planar or non-planar surface, such as a surface over which the pointing device is moved (as in the case of an optical mouse), the surface of a ball (as in the case of an optical trackball) or any other suitable surface that may provide an appropriate intensity pattern for detection by photodetector array 100. It should be mentioned that a light source is not, strictly speaking, necessary and that ambient light reflected by surface S may directly be used.
Processing means 110 is further adapted to communicate in a bidirectional manner with an interface 140 that communicates in turn with a host system (not illustrated) over a bus 150. Cursor control signals (and eventually other signals related to the optical pointing device) are supplied to the host system over bus 150. Processing means 110 may also receive information, such as configuration signals, over bus 150 from the host system.
Processing means 110 is essentially designed to intermittently sample the pixel outputs of photodetector array 100 in accordance with a defined sequence. The edge information of two successive samples is compared and a relative motion measurement is extracted by processing means 110. The adequate cursor control signals are then derived from the relative motion measurement and transmitted to the host system via line interface 140.
The method for motion detection disclosed in this document is based on two algorithms referred as “Peak/Null Motion Detection” algorithm and as “Local Edge Direction Motion Detection” algorithm. Both algorithms are based on edge direction data from the pixel array and are enclosed herewith by way of reference.
Referring in more detail to the “Peak/Null Motion Detection” algorithm, each row and column of the photodetector array is further analysed to find specific inflection conditions (hereinafter defined as a first inflection condition, or “peak”, and a second inflection condition, or “null”) in the direction of successive edges along a selected axis (in practice along both X and Y axes). As illustrated in FIG. 2, the first inflection condition, or peak, is defined as the succession, along a determined axis (X or Y), of a positive edge (arrow pointing upwards in FIG. 2) followed by a negative edge (arrow pointing downwards in FIG. 2). Similarly, the second inflection condition, or null, is defined as the succession, along the determined axis, of a negative edge followed by a positive edge.
In contrast to the above edge direction conditions, it will be appreciated that the edge inflection conditions do not appear everywhere. Strictly speaking, one should also consider that there exists a third inflection condition representative of the fact that there does not exist, at a selected location, any inflection in the direction of the edges.
With reference to FIGS. 3, 4a and 4b, one will now describe the basic principle for detecting motion based on the above edge inflection data, referred as the “Peak/Null Motion Detection” algorithm. FIG. 3 schematically shows an exemplary situation (in case of single axis motion detection) of a succession of ten successive edge direction conditions and extracted edge inflection conditions determined from two successive flashes (i.e. conditions derived from two successive light intensity patterns detected by the photodetector array). This exemplary situation is typical of sub-pixel motion (displacement of less than the pixel pitch between two successive flashes). As shown in FIG. 3, three edge inflection conditions are detected, namely a peak between the second and third edge direction conditions, a null between the fourth and fifth edge direction conditions, and a peak between the seventh and eighth edge direction conditions. Following the second flash, one can see that only the null condition moved one unit to the right (this situation again being typical of sub-pixel motion). In addition to accumulators for tracking motion of edge inflection conditions, one additional accumulator per axis is provided for counting the total number of edge inflection conditions (peaks and nulls together) appearing on each axis.
Referring again to the exemplary situation of FIG. 3, one will understand that the accumulator associated to the tracking of motion of edge inflection conditions would be incremented, the total number of peaks and nulls detected by accumulator associated for counting the total number of edge inflection conditions being in this case three. In case of motion detection along two axes (as in the case of an optical pointing device), one will of course have understood that these steps are performed for each row of the array along axis X and each column of the array along axis Y.
This method requires a minimum of two accumulators per axis, one for tracking motion of edge inflection conditions (peaks and nulls being still tracked independently) and another one for tracking the total number of edge inflection conditions detected along the selected axis.
FIGS. 4a and 4b schematically show a variant of the above principle which implements motion detection of edge inflection conditions along the diagonals of the first and second axes (hatched symbols 400 show the six possible neighbouring locations of an edge inflection condition while symbol 410 designates the detected target edge inflection condition). FIGS. 4a and 4b respectively illustrate the principle for edge inflection motion along axis X and Y. This variant can be implemented by incrementing or decrementing the appropriate accumulator, not only if a corresponding edge inflection condition comes from a neighbouring location on the same axis, but also if a corresponding edge inflection conditions comes from one of the four neighbouring locations along the diagonals as depicted in FIGS. 4a and 4b, i.e. along a direction which exhibits a direction component along the axis for which motion is determined. FIGS. 4a and 4b each illustrate the six possible directions (which all exhibit a direction component along the corresponding axis) from which an edge inflection condition could originate when looking at possible displacement along axis X and Y (motion detection along axis Y is actually similar to motion detection along axis X if one rotates 90 degrees the illustration of FIG. 4a).
A calculation method may consist in computing the displacement values along axes X and Y directly, as summarized by the following analytical expressions:
                              X          DISPLACEMENT                =                                                                                                  (                                                                  N                                                  PEAK                          ⁢                                                      -                                                    ⁢                          RIGHT                                                                    +                                              N                                                  NULL                          ⁢                                                      -                                                    ⁢                          RIGHT                                                                                      )                                    -                                                                                                      (                                                            N                                              PEAK                        ⁢                                                  -                                                ⁢                        LEFT                                                              +                                          N                                              NULL                        ⁢                                                  -                                                ⁢                        LEFT                                                                              )                                                                          (                                          N                XPEAK                            +                              N                XNULL                                      )                                              (        1        )                                          Y          DISPLACEMENT                =                                                                                                  (                                                                  N                                                  PEAK                          ⁢                                                      -                                                    ⁢                          UP                                                                    +                                              N                                                  NULL                          ⁢                                                      -                                                    ⁢                          UP                                                                                      )                                    -                                                                                                      (                                                            N                                              PEAK                        ⁢                                                  -                                                ⁢                        DOWN                                                              +                                          N                                              NULL                        ⁢                                                  -                                                ⁢                        DOWN                                                                              )                                                                          (                                          N                YPEAK                            +                              N                YNULL                                      )                                              (        2        )                                          X          DISTANCE                =                              X            DISPLACEMENT                    ·                      L            PP                                              (        3        )                                          Y          DISTANCE                =                              Y            DISPLACEMENT                    ·                      L            PP                                              (        4        )            
This method requires a minimum of two accumulators per axis, one for tracking motion of edge inflection conditions (peaks and nulls being still tracked independently) and another one for tracking the total number of edge inflection conditions detected along the selected axis. In order to allow greater flexibility in the calculation, one way use, as a minimum, four accumulators per axis so that either one of the above two calculation method may be implemented with the same motion detection device architecture.
With the development of optical sensing device, all kind of surfaces may be used. However, detection of motion features is disturbed if the supporting surface presents periodic lines oriented in between both detection axes. In particular, users are more and more often using their optical mouse directly on their desk. Then, in case of desks made of wood or other periodic designed materials, these periodic lines interfere with real motion features moving along these lines. In extreme cases, the detected motion can be disturb in such a way that motion along one axis is reported as motion along the other axis.
Furthermore, when using the “Peak/Null Motion Detection” algorithm, even though consideration of diagonals into the calculation method generally improves the motion detection, in the particular case of surface with periodic lines, the reliability of the motion displacement calculated along both axes decreases.